/**
 * @(#)Incremento.java Feb 22, 2007
 *
 * Copyright (c) 2005-2010 Psiqueware S.A. de C.V. All Rights Reserved.
 * This software is the proprietary information Psiqueware S.A. de C.V.
 * Use is subject to license terms.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
 * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
 * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
 * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 *
 *
 * <br/>Usuario : Psique
 * <br/>Creaci&oacute;n: Feb 22, 2007 - 8:57:13 AM
 * <br/>
 * <br/>
 * <br/><t5>Cambios :</t5>
 * <br/><b>Fecha | Autor  |  Cambios</b>
 * <ul>
 * <li>Feb 22, 2007 | <a href = "mailto:AngelElectrico@PsiqueWare.com">Psique</a> | Creaci&oacute;n del Objeto.</li>
 *
 * </ul>
 */

package com.psiqueware.jazmin.empresas.recursos.humanos.compensaciones;

import com.psiqueware.jazmin.empresas.recursos.humanos.Sueldo;

import java.math.BigDecimal;

/**
 * Incremento para c&aacute;lculos de compensaciones.
 * <br/>Paquete Original: com.psiqueware.laVIE.empresas.empleados.compensaciones
 * <br/>Nombre  Original: Incremento
 * <br/>Oprima para ver : <a href="Incremento.java.html"><i>C&oacute;digo Fuente</i> </a>
 *
 * @author <a href="mailto:AngelElectrico@PsiqueWare.com">Psique</a>
 * @version Revision: 1.1 Feb 22, 2007 8:57:13 AM
 * @noinspection ClassWithoutLogger
 */
public class Incremento
{

    /** Aumento de {@link Sueldo} sugerido por el sistema. */
    private BigDecimal m_cantidad;


    /** N&uacute;mero mayor a 0 que indica el porcetaje a aumentar. */
    private BigDecimal m_porcentaje;

    /** Sueldo incrementado. */
    private Sueldo m_sueldo;

    /** Constructor de Incremento. */
    public Incremento ()
    {

    }

    /**
     * Establece el Aumento de {@link Sueldo} sugerido por el sistema. Adem&aacute;s actualiza el
     * valor para this#getPorcentaje
     *
     * @param cantidad nuevo valor para 'cantidad'.
     *
     * @see BigDecimal
     */
    public void setCantidad ( final BigDecimal cantidad )
    {
        m_cantidad = cantidad;

        if ( m_sueldo != null )
        {
            final BigDecimal mensual = m_sueldo.getCantidadMensual ();
            m_porcentaje = mensual.divide ( m_cantidad );
        }
    }

    /**
     * Establece el N&uacute;mero mayor a 0 que indica el porcetaje a aumentar.  Adem&aacute;s actualiza el
     * valor para this#getCantidad.
     *
     * @param porcentaje nuevo valor para 'porcentaje'.
     *
     * @see BigDecimal
     */
    public void setPorcentaje ( final BigDecimal porcentaje )
    {
        m_porcentaje = porcentaje;
        if ( m_sueldo != null ){
            final BigDecimal mensual = m_sueldo.getCantidadMensual ();
            m_cantidad= mensual.multiply ( porcentaje);
        }
    }


    /**
     * Devuelve el Aumento de {@link Sueldo} sugerido por el sistema.
     *
     * @return valor de 'cantidad'.
     *
     * @see BigDecimal
     */
    public BigDecimal getCantidad ()
    {
        return m_cantidad;
    }



    /**
     * Devuelve el N&uacute;mero mayor a 0 que indica el porcetaje a aumentar.
     *
     * @return valor de 'porcentaje'.
     *
     * @see BigDecimal
     */
    public BigDecimal getPorcentaje ()
    {
        return m_porcentaje;
    }
    /**
     * Devuelve el Sueldo incrementado.
     *
     * @return valor de 'sueldo'.
     *
     * @see Sueldo
     */
    public Sueldo getSueldo ()
    {
        return m_sueldo;
    }

    /**
     * Establece el Sueldo incrementado.
     *
     * @param sueldo nuevo valor para 'sueldo'.
     *
     * @see Sueldo
     */
    public void setSueldo ( final Sueldo sueldo )
    {
        m_sueldo = sueldo;
    }

    /**
     * Convierte este {@link Incremento} a su representación textual.
     *
     * @noinspection DuplicateStringLiteralInspection,HardCodedStringLiteral,HardcodedLineSeparator
     */
    public String toString ()
    {
        StringBuilder sb = new StringBuilder ();
        sb.append ( "<Instance Class = '" ).append ( this.getClass ().getCanonicalName () ).append ( "'>" );
        sb.append ( "<cantidad>" ).append ( m_cantidad ).append ( "</cantidad> " );
        sb.append ( "<porcentaje>" ).append ( m_porcentaje ).append ( "</porcentaje> " );
        sb.append ( "<sueldo>" ).append ( m_sueldo ).append ( "</sueldo> " );
        sb.append ( "</Instance>" );
        return sb.toString ();
    }
}

